package saii.integracion.wrapper.XML;

import java.io.File;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import saii.business.modelo.Profesor;
import saii.integracion.utilidades.Archivo_Propiedades;

public class WrapperXML implements IWrapperXML {

	
	// Constantes

	Logger log = Logger.getLogger("WrapperFD4.java");

	Properties propiedades = new Archivo_Propiedades().getProperties();

	private String rutaXML=propiedades.getProperty("RUTA_XML");
	private String nombreXML=propiedades.getProperty("NOMBRE_XML");

	@Override
	public ConcurrentHashMap<String, Profesor> getProfesores() {
		
		ConcurrentHashMap<String, Profesor> listProfesores = new ConcurrentHashMap<String, Profesor>();
		
//		ArrayList<Profesor> listProfesores = new ArrayList<Profesor>();
		
		try {
			 
			File fXmlFile = new File(rutaXML,nombreXML);
			DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
			Document doc = dBuilder.parse(fXmlFile);
			doc.getDocumentElement().normalize();
			 
			NodeList nList = doc.getElementsByTagName("profesor");
			
			
			for (int temp = 0; temp < nList.getLength(); temp++) {
		 
				Profesor pAux = null;
				
				Node nNode = nList.item(temp);
		 
				if (nNode.getNodeType() == Node.ELEMENT_NODE) {
		 
					Element eElement = (Element) nNode;
		 
					pAux = new Profesor(eElement.getElementsByTagName("dni").item(0).getTextContent(), eElement.getElementsByTagName("puesto").item(0).getTextContent(), eElement.getElementsByTagName("departamento").item(0).getTextContent());

					
					
				}
				
				listProfesores.put(pAux.getDni(), pAux);

				
			}
		    } catch (Exception e) {
			e.printStackTrace();
		    }
		  
	
		return listProfesores;
		
		
		
	}

}
